[小ネタ] aws-nukeのconfigファイルの重複箇所をFileter Presetsを使ってスッキリさせてみる
「複数アカウントでaws-nuke使うとconfigファイルの重複箇所が多くて辛い」
aws-nuke複数アカウントで使うと、同じ箇所をfileterで除外したいことがあります。 例えば、全てのAWSアカウントで特定のIAMロールは削除したくないなど。
普通に書くと重複した記述になるのですが、presetsに書けばスッキリかけます。
rebuy-de/aws-nuke: Nuke a whole AWS account and delete all its resources.
小ネタですが、便利だと思ったのでブログにします。
やってみた
普通に書く
以下では、AWS CDKでcdk bootstrapを実行する際に自動で生成されるリソースを除外しています。
regions: - ap-northeast-1 - global account-blocklist: - 123456789012 accounts: "111122223333": filters: IAMRolePolicy: - type: glob property: tag:role:aws-cdk:bootstrap-role value: "*" IAMRole: - type: glob property: tag:role:aws-cdk:bootstrap-role IAMRolePolicyAttachment: - type: glob property: tag:role:aws-cdk:bootstrap-role S3Bucket: - type: exact property: tag:aws:cloudformation:stack-name value: "CDKToolkit" CloudFormationStack: - type: exact property: Name value: "CDKToolkit" ECRRepository: - type: glob value: "*cdk-*-container-assets-*" SSMParameter: - type: glob property: tag:aws:cloudformation:stack-name value: "CDKToolkit" "222233334444" filters: IAMRolePolicy: - type: glob property: tag:role:aws-cdk:bootstrap-role value: "*" IAMRole: - type: glob property: tag:role:aws-cdk:bootstrap-role IAMRolePolicyAttachment: - type: glob property: tag:role:aws-cdk:bootstrap-role S3Bucket: - type: exact property: tag:aws:cloudformation:stack-name value: "CDKToolkit" CloudFormationStack: - type: exact property: Name value: "CDKToolkit" ECRRepository: - type: glob value: "*cdk-*-container-assets-*" SSMParameter: - type: glob property: tag:aws:cloudformation:stack-name value: "CDKToolkit"
結構長いですね。 2アカウントならまだ見れるかもですが、10アカウントとかになったら恐ろしいですね。
Fileter Presetsで重複箇所をまとめる
presetsブロックに、重複箇所をまとめることができます。
regions: - ap-northeast-1 - global account-blocklist: - 123456789012 accounts: "111122223333": presets: - "cdk" "222233334444" presets: - "cdk" presets: cdk: filters: IAMRolePolicy: - type: glob property: tag:role:aws-cdk:bootstrap-role value: "*" IAMRole: - type: glob property: tag:role:aws-cdk:bootstrap-role IAMRolePolicyAttachment: - type: glob property: tag:role:aws-cdk:bootstrap-role S3Bucket: - type: exact property: tag:aws:cloudformation:stack-name value: "CDKToolkit" CloudFormationStack: - type: exact property: Name value: "CDKToolkit" ECRRepository: - type: glob value: "*cdk-*-container-assets-*" SSMParameter: - type: glob property: tag:aws:cloudformation:stack-name value: "CDKToolkit"
もちろん、presetsと通常のfiltersを併用することも可能です。
# 省略 "111122223333" presets: - "cdk" filters: IAMRole: - "test" # 省略
おわりに
aws-nukeのconfigファイルの小ネタでした。
configファイルが長くなって読みづらいなど感じた方は、試してみるといいかもしれません。
以上、AWS事業本部の佐藤(@chari7311)でした。